Unity 5 教程 | 低多边形场景的光照与后处理
我们曾经为大家介绍过Unity中预计算实时GI系列教程,受到了广大开发者的欢迎。本文我们将为大家介绍如何在Unity 5.5中为低多边形场景添加光照和后处理。本文涉及到的资源包,请您点击【阅读原文】进行下载。
课前介绍
通过学习本教程,您可以了解到如下内容:
Unity中光照的基础概念
为场景设置预计算实时全局光照(Precomputed Realtime GI)
为动态(非静态)对象添加光照探针(Light Probes)以使用预计算实时全局光照
更改光照设置/颜色
从Unity标准资源包中导入Images Effects
设置摄像机的后处理图像效果:
环境光遮蔽(Ambient Occlusion)
全局雾(Global Fog)
景深(Depth of Field)
色调映射(Tonemapping)
抗锯齿(Antialiasing)
泛光(Bloom)
色彩矫正寻址纹理(Color Correction Lookup Texture)
晕影和色差(Vignette and Chromatic Aberration)
调整场景颜色衬托不同的氛围
本教程使用的软件:Unity 5.5和Photoshop CC 2017
如何为低多边形场景设置光照
下面就按步骤了解一下如何为低多边形场景设置光照。
目标平台
确保将目标平台设为PC,Mac & Linux Standalone平台。如果不是,请点击菜单项File -> Build Settings,选择“PC,Mac & Linux Standalone“,然后点击Switch Platform按钮切换平台。
启用预计算实时GI(全局光照)
依次点击Unity菜单项Window -> Lighting打开Lighting面板,在Lighting面板选择Scene选项卡。
打开Precomputed Realtime GI选项卡,设置实时分辨率(Realtime Resolution)为0.5(分辨率越小,全局光照预计算越快)
这里建议在开发时可以将Realtime Resolution设得更低,在最终场景中将其设为0.5或更大。将CPU Usage设为Medium。
禁用Baked GI
在面板底部取消下图所示的Auto复选框,以禁用自动构建。
清除GI缓存
这样做是因为场景可能未按预期进行烘焙。依次点击菜单项Edit -> Preferences,在GI Cache选项卡下点击Clean Cache按钮清除缓存。
使用预计算实时GI
在层级视图选中地形资源,并将它们设为静态,以便使用预计算实时GI。对于非静态资源可以使用光照探头(Light Probes),下一步骤将具体说明。
现在打开光照面板,启用自动构建。并等待构建完成(编辑器右下角会显示蓝色进度条)。这就表示此刻地形正在使用预计算实时全局光照(Precomputed Realtime GI)或反射光照(Bounced Lighting)。
启用自动构建后,当场景发生任何改变,例如移动地形时,场景会自动构建实时全局光照。
确保将颜色空间(Color Space)设为线性
依次点击菜单项Edit > Project Settings > Player,将Other Settings下的Color Space设为Linear。这里设为Linear效果会比Gamma更佳。
更改光照设置
选取场景中的方向光(这里命名为Sun),将其拖拽到光照面板Scene选项卡的Sun属性中。
当使用程序化的天空盒时,该属性用于指定一个方向光来表示“太阳”的方向(或是照亮场景的大型远距离光源)。如果未设置该值,则场景中最亮的方向光将被指定为太阳光。
另外,将Ambient Source改为 Color,并设置颜色为您喜欢的颜色(本例使用#896262)。它用于改变场景中的环境光颜色。
在层级视图中选择Sun(方向光),将其按X和Y轴旋转来改变场景时间和氛围。
调整光线和阴影直到效果满意。仅通过改变Sun(方向光)的旋转就可以实现如下效果:
添加光照探头
非静态(移动的)对象使用光照探头(Light Probes)来获取反射光(预计算实时GI)数据。场景中所有的树、石头、蘑菇上都使用了光照探头,即使它们静止不动。最好为小对象使用光照探头以提高性能,包括内存和全局光照构建时长。
在层级视图上依次点击Create > Light > Light Probe Group。
选中Light Probe Group并将其移动到场景资源(树、石头、等等)所在的地方。并将光照探头放在地面,以确保所有物体都将受到预计算实时全局光照的影响。
选中Light Probe Group,启用Edit Light Probes模式。
可以在检视面板点击按钮进入编辑模式,也可以在鼠标左键点击光照探头上黄色的球来自动启用Edit Light Probes模式。同时按住SHIFT键可以选择多个部分。
这里选中一面的所有光照探头,将它们移动到资源(树、石头等等)的边界位置。按这种方式移动了所有面,让主场景的非静态资源如树、石头等等,都在光照探头组内部。因此,它们可以通过预计算实时全局光照获得地面的反射光。
在正交视图(Orthographic View)下选择整面的光照探头,复制(按住CTRL+SHIFT)并移动几次,以覆盖主场景的所有非静态资源。
复制并移动光照探头后,整个Light Probe Group如下:
删除或移动多个光照探头还有其它方式,但上面这种方式可用于尽快创建示例场景。在层级视图中取消选择Light Probe Group,光照探头效果如下:
下面来测试光照探头如何工作,例如有多少光从地面反弹到石头上。通常禁用光照探头组Gizmo会有助于更好地观察场景。在场景视图中的Gizmos下拉菜单中取消勾选LightProbeGroup。
现在可以通过在检视面板上禁用或启用Light Probe Group组件来测试光照探头组的效果。从下图可以清楚看到石头从地面上反射出绿光。这是预计算实时全局光照对静态地形和使用光照探头组的非静态物体所带来的影响。
如何为低多边形场景设置后处理
光照设置好之后,我们再来看一下如何为低多边形场景设置后处理。
导入资源
选择Assets > Import Package > Effects。
您可以从Unity官网下载标准资源包,导入所需的特效资源。将Image Effects导入到项目中。
在摄像机上添加后处理图像特效
请按本文指定顺序添加所有的图像特效,如果想了解每个摄像机效果是如何变化的,请观看下面的视频教程:
https://v.qq.com/txp/iframe/player.html?vid=d03991q4c0m&width=500&height=375&auto=0
1. 添加Screen Space Ambient Occlusion,在层级视图选中Main Camera,在检视面板中点击Add Component,为其添加Screen Space Ambient Occlusion组件。
现在调整脚本设置以便场景效果更好。本例中脚本设置如下:
2. 添加Global Fog组件,点击Add Component按钮并搜索Global Fog。
本场景Global Fog脚本设置如下:
另外,启用Lighting界面Scene标签页下的Fog,以设置Global Fog Color和其他雾效属性。本例中的Fog设置如下(场景雾颜色代码是#767474FF):
3. 添加Depth of Field组件,点击Add Component并且搜索Depth of Field(Lens Blur,Scatter…)
调整脚本设置,让场景突出主要焦点。本例中Depth of Field设置如下(关注点是篝火):
4. 添加Tonemapping组件
示例的低多边形场景中使用如下设置效果最佳:
5. 添加Antialiasing并保持默认设置。
6. 添加Bloom,Bloom脚本设置如下(我通常将阈值调整为0.6)。
7. 添加Color Correction (3D Lookup…),并保持默认设置。
8. 添加Vignette and Chromatic Aberration。
调整脚本设置以便场景效果最佳。本场景中设置如下:
设置 Color Correction Lookup Texture
Unity编辑器游戏视图的场景屏幕截图如下:
现在打开Photoshop,并粘贴上面的屏幕截图。然后调整图像的Adjustments实现您想要的场景氛围。尝试所有不同设置,这里稍微改变一点亮度/对比度和色彩平衡:
场景色彩调整合适后,需要导入Color Lookup Texture到Photoshop中的截图上。可以在Unity工程中找到Color Lookup Texture。在Assets > Standard Assets > Image Effects > Textures目录下有名为Neautral3D16的纹理。
如果找不到该纹理,请确保已经遵循后处理部分的第一个步骤,从Standard Assets资源包中导入了Image Effects。
导入Color Lookup Texture到Photoshop后,确保纹理层级在Image Adjustment Effects的下方。
然后选择Color Lookup Texture并用Crop Tool进行裁剪,仅保留该纹理。
选择File -> Save As…将文件保存为.PNG格式(可以任意命名)用于Unity项目,您可以为该纹理新建文件夹。
现在打开Unity,在层级视图选中Main Camera,在检视面板中打开Color Correction Lookup (Script)。将刚刚保存的Color Lookup Texture拖拽至” None (Texture 2D)”的方形区域上,并且点击“Conver and Apply”。
到此所有步骤就完成了,效果如下:
总结
希望您可以试着用Unity 5跟着上述教程进行学习,期待看到您创造出更加真实的场景来。请点击【阅读原文】访问Unity官方中文社区(forum.china.unity3d.com)下载教程资源包,跟着练起来吧!
更多Unity相关教程
Unite 2017 Shanghai主日程曝光!
Unite 2017 Shanghai主日程曝光!快来看看这70多场技术演讲的精彩之处吧。想要领略Unity全球大师的风采,请免费抢注Keynote主题演讲门票!更多详情,请访问Unite 2017 Shanghai大会官网(forum.china.unity3d.com)
点击“阅读原文”下载文中资源!